package vista;

import javax.swing.*;
import javax.swing.text.MaskFormatter;

import controlador.Login;

import java.awt.*;
import java.awt.event.*;
import java.text.ParseException;

import modelo.Funcionario;
import net.miginfocom.swing.MigLayout;

public class JanelaPrimeiroAcesso {
	private JFrame frame;
	private JLabel lbOlEste;
	private JTextPane welcome;
	private JPanel pFormulario, pCentral;
	private JLabel lbNome, lbCPF, lbLogin, lbSalario, lbSenha;
	private JTextField tfNome, tfCPF, tfLogin, tfSalario;
	private JPasswordField tfSenha;
	private JButton btOk;
	private MaskFormatter cpfFormatter;
	private Login sistema;

	public JanelaPrimeiroAcesso(Login sistema) {
		this.sistema = sistema;

		frame = new JFrame();
		frame.getContentPane().setEnabled(false);
		frame.getContentPane().setLayout(null);
		frame.setSize(460, 415);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		pCentral = new JPanel();
		frame.setContentPane(pCentral);
		pCentral.setLayout(null);

		lbOlEste = new JLabel("Ol\u00E1! Este \u00E9 seu primeiro acesso!");
		lbOlEste.setBounds(19, 17, 332, 25);
		lbOlEste.setFont(lbOlEste.getFont().deriveFont(lbOlEste.getFont().getStyle() | Font.BOLD, 20f));
		frame.getContentPane().add(lbOlEste);

		welcome = new JTextPane();
		welcome.setBounds(29, 54, 400, 73);
		welcome.setBackground(UIManager.getColor("InternalFrame.background"));
		welcome.setEditable(false);
		welcome.setPreferredSize(new Dimension(400, 100));
		welcome.setText("Seja bem-vindo(a). Como esta \u00E9 a primeira vez que o sistema \u00E9 executado, \u00E9 necess\u00E1rio cadastrar um gerente para come\u00E7ar a us\u00E1-lo. Por favor, insira os dados do funcion\u00E1rio principal, que ter\u00E1 controle total dos produtos e outros funcion\u00E1rios.");
		pCentral.add(welcome);

		pFormulario = new JPanel();
		pFormulario.setBounds(19, 140, 400, 192);
		frame.getContentPane().add(pFormulario);
		pFormulario.setLayout(new MigLayout("fill", "[][grow]", "[]"));

		lbNome = new JLabel("Nome completo");
		pFormulario.add(lbNome);
		tfNome = new JTextField();
		pFormulario.add(tfNome, "growx, wrap");

		lbCPF = new JLabel("CPF");
		pFormulario.add(lbCPF);
		try {
			cpfFormatter = new MaskFormatter("###.###.###-##");
			cpfFormatter.setPlaceholderCharacter('_');
		} catch (ParseException e) { }
		tfCPF = new JFormattedTextField(cpfFormatter);
		pFormulario.add(tfCPF, "growx, wrap");

		lbSalario = new JLabel("Salario");
		pFormulario.add(lbSalario);
		tfSalario = new JTextField();
		tfSalario.setColumns(10);
		pFormulario.add(tfSalario, "wrap");

		lbLogin = new JLabel("Login");
		pFormulario.add(lbLogin);
		tfLogin = new JTextField();
		tfLogin.setColumns(10);
		pFormulario.add(tfLogin, "wrap");

		lbSenha = new JLabel("Senha");
		pFormulario.add(lbSenha);
		tfSenha = new JPasswordField();
		tfSenha.setColumns(10);
		tfSenha.addActionListener(new OuvinteAdicionarFuncionario());
		pFormulario.add(tfSenha, "wrap");

		btOk = new JButton("Prosseguir");
		btOk.addActionListener(new OuvinteAdicionarFuncionario());
		btOk.setBounds(164, 342, 130, 29);
		pCentral.add(btOk);


		Dimension dimension = frame.getToolkit().getScreenSize(); 
		int x = (int) (dimension.getWidth() - frame.getSize().getWidth() ) / 2; 
		int y = (int) (dimension.getHeight() - frame.getSize().getHeight()) / 2; 
		frame.setLocation(x,y);

		frame.setVisible(true);
	}

	class OuvinteAdicionarFuncionario implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent arg0) {
			Funcionario novo;

			if (tfLogin.getText().equals("") || tfNome.getText().equals("") || tfCPF.getText().equals("") || String.valueOf(tfSenha.getPassword()).equals("")) {
				JOptionPane.showMessageDialog(new JFrame(), "Verifique se todos os campos foram preenchidos corretamente.", "Erro", JOptionPane.WARNING_MESSAGE);
			}
			else {
				try {
					novo = new Funcionario(tfLogin.getText(), tfNome.getText(), tfCPF.getText(), 
							Double.parseDouble(tfSalario.getText().replace(',','.')), String.valueOf(tfSenha.getPassword()), true);

					sistema.addFuncionario(novo);

					new JanelaGerente(novo);

					frame.dispose();

				} catch (NumberFormatException e) {
					JOptionPane.showMessageDialog(new JFrame(), "Verifique se todos os campos foram preenchidos corretamente.", "Erro", JOptionPane.WARNING_MESSAGE);
				}
			}
		}

	}
}
